def solve(nums1, m, nums2, n):
    i, j = 0, 0
    res = []

    # print(id(nums1))
    while i < m or j < n:
        if i == m:
            res.append(nums2[j])
            j += 1
        elif j == n:
            res.append(nums1[i])
            i += 1
        elif nums1[i] < nums2[j]:
            res.append(nums1[i])
            i += 1
        else:
            res.append(nums2[j])
            j += 1

    nums1[:] = res # 这种赋值方式会改变原列表nums1，没有新建一个新的列表
    # nums1 = res # 这种赋值相当于新建了一个新的列表，原列表nums1并没有改变
    # print(id(nums1))

    return nums1


if __name__ == "__main__":
    nums1 = [1, 2, 3]
    m = 3
    nums2 = [2, 5, 6]
    n = 3
    print(solve(nums1, m, nums2, n))
